package etude.collecteur.impl;

//**************************** Class Ecriture_dans_un_fichier *****************************//

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

import etude.collecteur.Statistic;
import etude.collecteur.Writer;

/**
 * Class dont le but est d'ecrire des donnes de types Statistic dans un fichier.
 * @author anthonyestebe
 *
 */
public class WriterFile implements Writer {
	private File f;
	private boolean ecrireEnTete;
	
	/**
	 * Fonction permettant l'ecriture de l'entête du fichier une seule fois.
	 * @param file
	 */
	public WriterFile(File file) {
		f = file; 
		ecrireEnTete = true ;   
	}
	
	/* (non-Javadoc)
	 * @see etude.collecteur.impl.Writer#Ecrire(java.io.File, int[])
	 */
	

	/**
	 * fonction permettant d'ecrire un tableau de Statistic.
	 */
	@Override	
	public void ecrire(Statistic[] stat) {
		// TODO Auto-generated method stub
		
		try
		{
			BufferedWriter pw = new BufferedWriter (getWriter());
  						
			// test pour permettre l'écriture d'entête seulement lors de la première ecriture du fichier. 
			if(ecrireEnTete) {
				pw.append("Date , Index, Current Size,ConnexionsUsed,MaxConnexionsUsed,MaxConnexions,AverageWaitingConnexion,AverageMaxWaitingConnexion");
				pw.newLine();
			}
			ecrireEnTete = false ; 

			for (Statistic statistic : stat)
			{
				StringBuilder builder = new StringBuilder();
				builder.append(statistic.getDateCollecte())
					   	.append(',')
					   	.append(statistic.getIndex())
					   	.append(',')
					   	.append(statistic.getCurrentSize())
						.append(',')
						.append(statistic.getConnexionsUsed())
						.append(',')
						.append(statistic.getMaxConnexionsUsed())
						.append(',')						
						.append(statistic.getMaxConnexions())
						.append(',')
						.append(statistic.getAverageWaitingConnexion())	
						.append(',')
						.append(statistic.getAverageMaxWaitingConnexion());
						
				pw.append(builder.toString());
				pw.newLine();
			}
  
			pw.close();
		}
		
		catch (IOException exception)
		{
			System.out.println ("Erreur lors de la lecture : " + exception.getMessage());
		}
		
	}
	
	protected java.io.Writer getWriter() throws IOException {
		return new FileWriter (f,true);
	}
 
}